package com.chinaoly.baotou.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.*;
import java.util.Date;

/**
 * 设备信息实体类
 *
 * @author xuyh
 * @date 2019-11-05 17:45:36
 */
@Entity
@Data
@Table(name = "tb_dev")
public class TBDev implements java.io.Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 设备ID
     */
    @Id
    @Column(name = "DEV_ID")
    private String devId;

    /**
     * 设备名称
     */
    @ApiModelProperty(value = "设备名称")
    @Column(name = "dev_name")
    private String devName;

    /**
     * 设备型号
     */
    @ApiModelProperty(value = "设备型号")
    @Column(name = "dev_model")
    private String devModel;

    /**
     * 是否是根据范围来的，1：是，0：否
     */
    @ApiModelProperty(value = "是否是根据范围来的，1：是，0：否")
    @Column(name = "range_is")
    private Integer rangeIs;

    /**
     * 设备状态
     */
    @ApiModelProperty(value = "设备状态")
    @Column(name = "dec_zt")
    private String decZt;

    /**
     * 小区编码
     */
    @ApiModelProperty(value = "小区编码")
    @Column(name = "community_code")
    private String communityCode;

    /**
     * 小区名称
     */
    @ApiModelProperty(value = "小区名称")
    @Column(name = "community_name")
    private String communityName;

    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    @Column(name = "longitude")
    private String longitude;

    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    @Column(name = "latitude")
    private String latitude;

    /**
     * 有效标志,是否有效，1表示有效，0表示无效
     */
    @ApiModelProperty(value = "有效标志,是否有效，1表示有效，0表示无效")
    @Column(name = "effect_flag")
    private Integer effectFlag;

    /**
     * 操作人
     */
    @ApiModelProperty(value = "操作人")
    @Column(name = "user_code")
    private String userCode;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "create_time")
    private Date createTime;

    /**
     * 最后一次订阅时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "last_subscribes_time")
    private Date lastSubscribesTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "update_time")
    private Date updateTime;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @Column(name = "memo")
    private String memo;

    /**
     * 设备编码
     */
    @ApiModelProperty(value = "设备编码")
    @Column(name = "device_number")
    private String deviceNumber;

    /**
     * 标准设备编码
     */
    @ApiModelProperty(value = "标准设备编码")
    @Column(name = "device_id")
    private String deviceId;

    /**
     * 设备类型（新加字段）
     */
    @ApiModelProperty(value = "设备类型（新加字段）")
    @Column(name = "dev_type")
    private String devType;

    /**
     * 设备厂商（新加字段）
     */
    @ApiModelProperty(value = "设备厂商（新加字段）")
    @Column(name = "manufacturer")
    private String manufacturer;

    /**
     * 设备序列号（新加字段）
     */
    @ApiModelProperty(value = "设备序列号（新加字段）")
    @Column(name = "dev_sn")
    private String devSn;

    /**
     * IP地址（新加字段）
     */
    @ApiModelProperty(value = "IP地址（新加字段）")
    @Column(name = "ip_addr")
    private String ipAddr;

    /**
     * MAC地址（新加字段）
     */
    @ApiModelProperty(value = "MAC地址（新加字段）")
    @Column(name = "mac_addr")
    private String macAddr;

    /**
     * 是否接入视图库（新加字段）
     */
    @ApiModelProperty(value = "是否接入视图库，1-是，2-否")
    @Column(name = "is_viid")
    private String isViid;

    /**
     * 端口号（新加字段）
     */
    @ApiModelProperty(value = "端口号（新加字段）")
    @Column(name = "port")
    private String port;

    /**
     * 楼栋编码（新加字段）
     */
    @ApiModelProperty(value = "楼栋编码（新加字段）")
    @Column(name = "building_code")
    private String buildingCode;

    /**
     * 楼栋名称（新加字段）
     */
    @ApiModelProperty(value = "楼栋名称（新加字段）")
    @Column(name = "building_name")
    private String buildingName;

    /**
     * 单元编码（新加字段）
     */
    @ApiModelProperty(value = "单元编码（新加字段）")
    @Column(name = "unit_code")
    private String unitCode;

    /**
     * 单元名称（新加字段）
     */
    @ApiModelProperty(value = "单元名称（新加字段）")
    @Column(name = "unit_name")
    private String unitName;

    /**
     * ipv6地址（新加字段）
     */
    @ApiModelProperty(value = "ipv6地址（新加字段）")
    @Column(name = "ipv6_addr")
    private String ipv6Addr;

    /**
     * 安装地点行政区划代码
     */
    @ApiModelProperty(value = "安装地点行政区划代码")
    @Column(name = "place_code")
    private String placeCode;

    /**
     * 位置名,具体到摄像机位置或街道门牌号，由 (乡镇街道)+ (街路巷)+ (门楼牌号)+ (门楼详细地址)构成
     */
    @ApiModelProperty(value = "位置名,具体到摄像机位置或街道门牌号，由 (乡镇街道)+ (街路巷)+ (门楼牌号)+ (门楼详细地址)构成")
    @Column(name = "place")
    private String place;

    /**
     * 管辖单位代码
     */
    @ApiModelProperty(value = "管辖单位代码")
    @Column(name = "org_code")
    private String orgCode;

    /**
     * 车辆抓拍方向,0：拍车头；1：拍车尾，兼容无视频卡口信息设备
     */
    @ApiModelProperty(value = "车辆抓拍方向,0：拍车头；1：拍车尾，兼容无视频卡口信息设备")
    @Column(name = "cap_direction")
    private String capDirection;

    /**
     * 监视方向
     */
    @ApiModelProperty(value = "监视方向")
    @Column(name = "monitor_direction")
    private String monitorDirection;

    /**
     * 监视区域说明
     */
    @ApiModelProperty(value = "监视区域说明")
    @Column(name = "monitor_area_desc")
    private String monitorAreaDesc;

    /**
     * 是否在线
     */
    @ApiModelProperty(value = "是否在线")
    @Column(name = "is_online")
    private String isOnline;

    /**
     * 采集设备所接的采集系统设备
     */
    @ApiModelProperty(value = "采集设备所接的采集系统设备")
    @Column(name = "owner_aps_id")
    private String ownerApsId;

    /**
     * 用于支持修改设备登陆帐号
     */
    @ApiModelProperty(value = "用于支持修改设备登陆帐号")
    @Column(name = "user_id")
    private String userId;

    /**
     * 用于支持修改设备登陆口令
     */
    @ApiModelProperty(value = "用于支持修改设备登陆口令")
    @Column(name = "password")
    private String password;

    /**
     * 功能类型。1、 车辆卡口； 2、 人员卡口；3、 微卡口； 4、 特征摄像机；5、 普通监控；6、高空瞭望摄像机； 99其他， 多选各参数以“ /” 分隔
     */
    @ApiModelProperty(value = "功能类型。1、 车辆卡口； 2、 人员卡口；3、 微卡口； 4、 特征摄像机；5、 普通监控；6、高空瞭望摄像机； 99其他， 多选各参数以“ /” 分隔")
    @Column(name = "function_type")
    private String functionType;

    /**
     * 摄像机位置类型.1-省际检查站、2-党政机关、3-车站码头、4-中心广场、5-体育场馆、6-商业中心、7-宗教场所、8-校园周边、9-治安复杂区域、10-交通干线、11-医院周边、12-金融机构周边、13-危险物品场所周边、14-博物馆展览馆、15-重点水域、航道、96.市际公安检查站；97.涉外场所；98.边境沿线；99.旅游景区， 多选各参数以“ /” 分隔
     */
    @ApiModelProperty(value = "摄像机位置类型.1-省际检查站、2-党政机关、3-车站码头、4-中心广场、5-体育场馆、6-商业中心、7-宗教场所、8-校园周边、9-治安复杂区域、10-交通干线、11-医院周边、12-金融机构周边、13-危险物品场所周边、14-博物馆展览馆、15-重点水域、航道、96.市际公安检查站；97.涉外场所；98.边境沿线；99.旅游景区， 多选各参数以“ /” 分隔")
    @Column(name = "position_type")
    private String positionType;

    /**
     * 标准地址ID
     */
    @ApiModelProperty(value = "标准地址ID")
    @Column(name = "address_code")
    private String addressCode;

    /**
     * 斜线分割的安装地址（13段）
     */
    @ApiModelProperty(value = "斜线分割的安装地址（13段）")
    @Column(name = "split_address")
    private String splitAddress;

    /**
     * 安装地址扩展描述
     */
    @ApiModelProperty(value = "安装地址扩展描述")
    @Column(name = "remake")
    private String remake;

    @ApiModelProperty(value = "楼栋类型(1:栋、2:号楼、3、号)")
    @Column(name = "building_type")
    private String buildingType;

    /**
     * 行政区域
     */
    @ApiModelProperty(value = "行政区域")
    @Column(name = "district_code")
    private String districtCode;

    /**
     * 同步状态
     */
    @ApiModelProperty(value = "同步状态(1:初始录入、2:已同步、3、未同步)")
    @Column(name = "upload_status")
    private Integer uploadStatus;

    /**
     * 同步时间
     */
    @ApiModelProperty(value = "同步时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "upload_time")
    private Date uploadTime = new Date();

    /**
     * 数据来源
     */
    @ApiModelProperty(value = "分为两级录入，三种方式。Q：区，S：市，1-页面录入，2-excel导入，3接口上传。示例：Q-1  代表区级页面录入")
    @Column(name = "data_upload_source")
    private String dataUploadSource;

    /**
     * 视图库订阅状态
     */
    @ApiModelProperty(value = "视图库订阅状态：1 未订阅  2 已订阅")
    @Column(name = "subscribes_type")
    private Integer subscribesType;

    /**
     * 动态文本接收数据最新抓拍时间
     */
    @ApiModelProperty(value = "动态文本接收数据最新抓拍时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "last_data_record_time")
    private Date lastDataRecordTime;

    /**
     * 视图库接收数据最新抓拍时间
     */
    @ApiModelProperty(value = "视图库接收数据最新抓拍时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "image_data_record_time")
    private Date imageDataRecordTime;

    @ApiModelProperty(value = "最后更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "last_update_time")
    private Date lastUpdateTime;

    @Transient
    private String district;
    @Transient
    private Integer times;
    @Transient
    private String azType;
    @Transient
    private String accessKey;

    //同步标识
    @Transient
    private Boolean synFlag = false;
    @Transient
    private String updateTimeFormat;

}
